<?php
namespace Admin\Model;
use Think\Model;
class MemberModel extends Model
{
    protected $insertFields = array('username','password','cpassword','chkcode','must_click');
    protected $updateFields = array('id','username','password','cpassword');
    protected $_validate = array(
        array('must_click', 'require', '必须同意注册协议！', 1, 'regex', 3),//array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
        //regex 	正则验证，定义的验证规则是一个正则表达式（默认）
        //self::MODEL_INSERT或者 1 新增数据时候验证
        //self::MODEL_UPDATE或者 2 编辑数据时候验证
        //self::MODEL_BOTH或者 3 全部情况下验证（默认）
        //Model::MUST_VALIDATE 或者1 必须验证
        //Model::VALUE_VALIDATE或者2 值不为空的时候验证
        array('username', 'require', '用户名不能为空！', 2, 'regex', 3),
        array('username', '1,30', '的值最长不能超过 30 个字符！', 2, 'length', 3),
        array('password', 'require', '密码不能为空！', 2, 'regex', 3),
        array('password', '6,20', '密码的值最长不能超过 6—20 个字符！', 2, 'length', 3),
        array('cpassword', 'password', '俩次密码必须一致！', 2, 'confirm', 3),
        array('username', '', '该用户已存在，请重新注册！', 2, 'unique', 3),
        array('chkcode', 'require', '验证码不能为空！', 1),
        array('chkcode', 'check_verify', '验证码不正确！', 1, 'callback'),
    );

    //为登录表单定义一个验证规则
    public $_login_validate=array(
        array('username', 'require', '用户名不能为空！', 1),
        array('password', 'require', '密码不能为空！', 1),
        array('chkcode', 'require', '验证码不能为空！', 1),
        array('chkcode', 'check_verify', '验证码不正确！', 1, 'callback'),

    );
    //判断验证码是否正确

    function check_verify($code, $id = ''){
        $verify = new \Think\Verify();
        return $verify->check($code, $id);
    }
    /********************在模型中添加login方法************************************/
    public function login($needpassword = TRUE){
        $username = $this->username;
        if($needpassword)
        $password = $this->password;
        //先查询这个用户名是否存在
        //登录的时候就直接把会员的所有信息取出来
        $user = $this->field('id,username,password,jifen')->where(array(
            'username'=>array('eq',$username),
        ))->find();
        if($user){
            if($needpassword){
                if($user['password'] == md5($password)){
                    /********************如果是QQ绑定的时候跳转的登录 就把当前账号和QQ的openid绑定 就是在当前登录的账号的
                     * openid字段 添加上当前QQ的session【openid】*****************************/
                    if(isset($_SESSION['openid'])){
                        $this->where(array('id'=>$user['id']))->setField('openid',$_SESSION['openid']);
                        unset($_SESSION['openid']);
                    }
                    //登录成功保存session
                    session('m_id', $user['id']);
                    session('m_username', $user['username']);
                    session('m_face', '../Public/Upload/Brand/2017-08-11/598d78c7c3792.jpg');

                    // 计算当前会员级别ID并存SESSION
                    $mlModel = D('member_level');
                    $levelId = $mlModel->field('id')->where(array(
                        'jifen_bottom' => array('elt', $user['jifen']),
                        'jifen_top' => array('egt', $user['jifen']),
                    ))->find();
                    session('level_id', $levelId['id']);
                    //调用前台购物车方法 把cookie的信息存到登录后这个会员下的 购物车表里
                    $cartModel = D('Home/cart');
                    $cartModel->moveDatatoDb();

                    return TRUE;
                }else{
                    $this->error = '密码不正确！';
                    return FALSE;
                }
            }else{
                session('m_id', $user['id']);
                session('m_username', $user['username']);
                session('m_face', '../Public/Upload/Brand/2017-08-11/598d78c7c3792.jpg');

                // 计算当前会员级别ID并存SESSION
                $mlModel = D('member_level');
                $levelId = $mlModel->field('id')->where(array(
                    'jifen_bottom' => array('elt', $user['jifen']),
                    'jifen_top' => array('egt', $user['jifen']),
                ))->find();
                session('level_id', $levelId['id']);
                //调用前台购物车方法 把cookie的信息存到登录后这个会员下的 购物车表里
                $cartModel = D('Home/cart');
                $cartModel->moveDatatoDb();

                return TRUE;
            }

        }else{
            $this->error = '用户名不存在！';
            return FALSE;
        }
    }

    /****************************************退出登录********************************************************************/
    public function logout(){
        session(null);
    }

    /***************************加密密码 在添加会员之前**********************************/
    protected function _before_insert (&$data,$option)
    {
        $data['password'] = md5($data['password']);

        //还是放到注册之前的好  要是放到注册之后  HIA要去where查
        if(isset($_SESSION['openid'])){
            $data['openid'] = $_SESSION['openid'];
            unset($_SESSION['openid']);
        }
    }


}